1. Field of the Invention
The present invention relates generally to an improved data processing system and in particular to the transmission of data. Still more particularly, the present invention relates to a computer implemented method, apparatus, and computer usable program code for transmitting of data packets over a network to an application.
2. Description of the Related Art
Client and server data processing systems communicate with each other by exchanging data over one or more networks that connect the data processing systems. The networks may include the Internet, a local area network (LAN), a wide area network, and intranet, or any other network that enables two or more data processing systems to exchange data. Data processing systems exchange data over a network by sending data in data structures that may be referred to as data packets. Data packets may include a variety of information, including the destination address, the source address, routing instructions, and application data that is meant to be used by an application executing on the destination data processing system. Thus, data packets may be broken down further into smaller data fragments.
Most files that are to be transmitted from a source data processing system to a destination data processing system contain too much data to place into a single data packet. Thus, a larger original file, such as a word processing document file or a video file, is broken down into many data packets for transmission from a source data processing system to a destination data processing system.
The data packets are then sent from the source data processing system to the destination data processing system. Usually different data packets take different paths through the network or networks and may arrive at different times at the destination data processing system. Network adapters at the destination data processing system receive these data packets and pass them along a bus system to communications software running on the destination data processing system. The communications software includes a protocol stack that receives the data packets through a software construct called a socket. A socket is typically used by an application to read and write TCP/IP messages.
Once received at socket, the data packets are reassembled into the original file by another part of the communications software called the assembly layer. The assembled original file received at the destination data processing system may be referred to as an assembled file. Once the packets are fully assembled to form the assembled file, this file is sent along the bus system to the target. In response, the target uses the assembled file to perform some action or operation. A target may be software or hardware which is adapted to use the data packet to perform some function. An example of a target is a web browser. The web browser may, for example, use the assembled file to display video to a user. Another example of target is a word processor. The word processor may, for example, use the assembled file to display a word processing document file to a user in a manner the user can understand and use. Another target may be a video card adapted for processing data packets containing video files.
However, problems may arise during this process. Because the original file is broken down into many data packets, if some of the data packets become corrupted, lost, or delayed, then the assembled file is not an exact copy of the original file. The assembled file may lack certain information or be corrupted in some way. In this case, the target might not be able to use the assembled file.
Currently, to reduce the chance of assembling a corrupted file, data packets are checked for data integrity to help ensure that all data fragments within the data packet are intact. If a data packet is considered corrupted or lacking data fragments in some way, then the destination data processing system transmits a re-send signal to the source data processing system. In response, the source data processing system resends the requested data packet. Similarly, if some of the data in the assembled file appears to be missing, then the target data processing system may transmit a re-send signal to the source data processing system. In response, the source data processing system resends the requested data packets.
However, this solution creates a new problem. The process of requesting re-transmission of data packets, sending new data packets, and assembling the new data packets consumes time. Thus, resending data packets slows down the process of communicating an original file from the source data processing system to the destination data processing system. When spread across many data processing systems in a network, these delays can result in reducing the overall efficiency of the network, because more total data packets are sent in order for a completed assembled filed to be useful to corresponding target in the destination data processing systems.